package 左叶子之和;

public class Solution2 {
    public int sumOfLeftLeaves(TreeNode root) {
        // 采用递归
        // 1.递归的参数和返回值：父节点，int，数值之和
        // 2.递归的终止条件：① 当前节点为null ② 当前节点的左右孩子都为null(这一步可以不用写)
        // 3.单层递归的逻辑：采用左右中的次序进行遍历，且需记录左右子树的值，最后返回左右子树的总和
        // 左叶子值一定是0
        if (root == null)
            return 0;
        // 左叶子值一定是0
        if (root.left == null && root.right == null)
            return 0;
        // 左
        int leftSum = sumOfLeftLeaves(root.left);
        if (root.left != null && root.left.left == null && root.left.right == null)
            leftSum = root.left.val;
        // 右
        int rightSum = sumOfLeftLeaves(root.right);
        // 中
        return leftSum + rightSum;
    }
}
